day09a (重ね合わせ処理)
今回から、段階を踏んでちまちまと書くようにした(できるだけ)
まずはnewの実装
https://scrapbox.io/files/6213365ff6c993001e859a7f.png
クラス作って動くかどうか確認した(コンストラクタとデストラクタがちゃんと呼ばれてる)
本と違って、newlib_supportにcloseとかlseekとか書かなきゃいけなかった(GitHubには変更がなかった)
これのおかげでstd::vectorが使えるようになったの最高すぎる
次にウィンドウ
DrawToでOptionalの有効無効で分岐する必要がわからなかったので、独自実装にしている
駄目だったら未来の自分がどうにかするだろう
駄目だった お前ふざけんなよ
Optional::value()は、値が無効値(std::nullopt)のとき例外を投げる
値がnulloptならそれを返してくれるから、比較できるでしょ!というカスの思考から今回の不具合が生まれたんですね
その後にレイヤー
std::vector::emplace_backは知らなかったけど、push_backと違ってコストが低い?
std::findで見つからなかった場合にend()になるというのを知らなくてずっと悩んでた
本に「非表示の場合の処理」って書いてあったのをこれでもかというほど見落としてた・・・
最後に、Consoleやマウスをレイヤーにしていく
何も表示されない・・・
原因は上(ウィンドウの部分)を参照